/**
 * 数据库模型定义
 */

// 登录用户表
export interface User {
  id: string;
  username: string;
  password: string;
  nickname?: string;
  email?: string;
  phone?: string;
  is_admin: number; // 0: 普通用户, 1: 管理员
  status: number; // 0: 禁用, 1: 启用
  created_at: Date;
  updated_at: Date;
}

// 登录用户权限表
export interface Permission {
  id: string;
  name: string;
  code: string;
  description?: string;
  created_at: Date;
  updated_at: Date;
}

// 用户权限关系表
export interface UserPermission {
  id: string;
  user_id: string;
  permission_id: string;
  created_at: Date;
}

// 会员表
export interface Member {
  id: string;
  user_id: string; // 所属登录用户
  name: string;
  phone?: string;
  email?: string;
  gender?: number; // 0: 未知, 1: 男, 2: 女
  birthday?: Date;
  address?: string;
  status: number; // 0: 禁用, 1: 启用
  created_at: Date;
  updated_at: Date;
}

// 会员等级表
export interface MemberLevel {
  id: string;
  user_id: string;
  name: string;
  level: number; // 等级数字
  description?: string;
  created_at: Date;
  updated_at: Date;
}

// 会员等级关系表
export interface MemberLevelRelation {
  id: string;
  member_id: string;
  level_id: string;
  created_at: Date;
}

// 数据库备份表
export interface DatabaseBackup {
  id: string;
  filename: string;
  filepath: string;
  size: number; // 文件大小（字节）
  description?: string;
  created_at: Date;
}

// 日志表
export interface Log {
  id: string;
  request_id: string;
  user_id?: string;
  type: string; // api, koa, mysql, redis, error, other
  level: string; // info, warn, error, debug
  message: string;
  data?: string; // JSON字符串
  ip?: string;
  method?: string;
  url?: string;
  created_at: Date;
}

// 通知表
export interface Notification {
  id: string;
  title: string; // 通知标题
  content: string; // 通知内容
  type: string; // 通知类型：info/warn/error/success
  status: number; // 状态 0:禁用 1:启用
  created_at: Date;
  updated_at: Date;
}

// 通知推送记录表
export interface NotificationPush {
  id: string;
  notification_id: string;
  user_id: string;
  created_at: Date;
}

// 通知已读关系表
export interface NotificationRead {
  id: string;
  notification_id: string;
  user_id: string;
  created_at: Date;
}

// 博客表
export interface Blog {
  id: string;
  user_id: string; // 所属登录用户
  title: string; // 标题
  content: string; // 内容
  summary?: string; // 摘要
  cover?: string; // 封面图
  status: number; // 状态 0:未发布 1:已发布
  created_at: Date;
  updated_at: Date;
}

// 标签表
export interface Tag {
  id: string;
  user_id: string; // 所属登录用户
  name: string; // 标签名称
  color?: string; // 标签颜色
  description?: string; // 标签描述
  created_at: Date;
  updated_at: Date;
}

// 分类表
export interface Category {
  id: string;
  user_id: string; // 所属登录用户
  name: string; // 分类名称
  description?: string; // 分类描述
  sort_order: number; // 排序顺序
  created_at: Date;
  updated_at: Date;
}

// 博客关系表（统一处理博客与标签、分类的关系）
export interface BlogRelation {
  id: string;
  blog_id: string;
  relation_type: 'tag' | 'category'; // 关系类型：tag（标签）或 category（分类）
  relation_id: string; // 关联ID（标签ID或分类ID）
  created_at: Date;
}

